home *** CD-ROM | disk | FTP | other *** search
/ Imagine the Universe (9th Edition) / Imagine the Universe 9 - Disc 1.iso / pc / imagine / docs / science / try_l2 / javascript / dwarfs.js < prev    next >
Encoding:
Text File  |  2002-10-29  |  8.2 KB  |  209 lines

  1. var letters = new Array("B", "C", "D", "E", "G", "H", "I", "J", "L", "M", "N", "O", "P", "Q", "R", "T", "U", "V", "X", "Y", "Z")
  2.  
  3. var names = new Array(
  4. "oneA1", "oneW1", "one1", "one2", "one3", "one4", "one5", "oneW2", "oneA2", "one6", "oneF1", "one7", "oneS1", "oneA3", "oneS2", "one8", "oneA4", "one9", "one10", "one11", "oneA5", "one12", 
  5.  
  6. "two1", "twoA1", "twoS1", "two2", "two3", "two4", "two5", "two6", "two7", "two8", "two9", "two10", "two11", "two12", "twoA2", "two13", "twoF1", "two14", "two15", "two16", 
  7.  
  8. "three1", "three2", "three3", "threeS1", "three4", "three5", "three6", "three7", "three8", "three9", "threeS2", "threeS3", "three10", "three11", "three12", "three13", "three14", "three15", "threeA1", "three16", "threeS4", "three17", "three18", "three19", 
  9.  
  10. "four1", "four2", "four3", "four4", "fourS1", "four5", "four6", "fourA1", "four7", "fourS2", "four8", "four9", "four10", "fourW1", "four11", "four12", "four13", "four14", "four15", "fourW2", "fourA2", "four16", "fourF1", 
  11.  
  12. "five1", "five2", "five3", "five4", "fiveA1", "five5", "five6", "fiveS1", "five7", "five8", "five9", "five10", "five11", "five12", "five13", "five14", "fiveA2", "five15", "five16", "five17", "five18", "five19", "five20", "five21", "five22", 
  13.  
  14. "six1", "six2", "six3", "sixW1", "six4", "six5", "six6", "six7", "six8", "sixW2", "sixA1", "six9", "sixF1", "sixS1", "six10", "six11", "sixA2", "six12", "six13", "six14", "six15", "six16", "sixS2",  
  15.  
  16. "sevenS1", "seven1", "sevenS2", "seven2", "seven3", "seven4", "seven5", "seven6", "seven7", "seven8", "sevenA1", "seven9", "seven10", "seven11", "seven12", "seven13", "seven14", "seven15", "sevenS3", "seven16", "seven17", "seven18", 
  17.  
  18. "eightA1", "eight1", "eight2", "eight3", "eightS1", "eight4", "eight5", "eight6", "eight7", "eight8", "eight9", "eight10", "eight11", "eightS2", "eight12", "eight13", "eight14", "eight15", "eight16", "eight17", "eightS3", "eight18", "eight19", "eightF1", "eightA2", "eight20", "eight21", 
  19.  
  20. "nineA1", "nine1", "nine2", "nine3", "nine4", "nine5", "nine6", "nine7", "nine8", "nineS1", "nine9", "nineS2", "nine10", "nine11", "nine12", "nine13", "nineA2", "nine14", "nine15", "nine16", "nine17", "nineA3", "nine18", "nine19", 
  21.  
  22. "ten1", "ten2", "ten3", "ten4", "ten5", "ten6", "tenA1", "ten7", "ten8", "ten9", "tenS1", "ten10", "ten11", "ten12", "ten13", "ten14", "ten15", "ten16", "ten17", "ten18", "tenK1",  
  23.  
  24. "eleven1", "eleven2", "eleven3", "elevenS1", "eleven4")
  25.  
  26. var numbers = new Array(
  27. "25", "4", "7", "11", "14", "22", "9", "4", "25", "5", "2", "11", "17", "25", "17", "14", "25", "5", "14", "7", "25", "14", 
  28.  
  29. "7", "25", "17", "1", "16", "21", "16", "5", "22", "1", "10", "3", "15", "22", "25", "5", "2", "10", "22", "15", 
  30.  
  31. "18", "5", "22", "17", "22", "1", "14", "11", "14", "11", "17", "17", "22", "22", "1", "19", "22", "3", "25", "10", "17", "22", "11", "14", 
  32.  
  33. "22", "21", "11", "14", "17", "13", "5", "25", "23", "17", "14", "7", "22", "4", "7", "11", "14", "22", "9", "4", "25", "5", "2", 
  34.  
  35. "3", "16", "1", "14", "25", "11", "1", "17", "7", "23", "9", "5", "16", "24", "22", "1", "25", "1", "9", "7", "22", "15", "11", "10", "21", 
  36.  
  37. "14", "7", "22", "4", "7", "11", "14", "22", "9", "4", "25", "5", "2", "17", "24", "5", "25", "8", "11", "14", "23", "11", "17", 
  38.  
  39. "17", "16", "17", "14", "5", "16", "1", "24", "14", "7", "25", "14", "11", "14", "18", "10", "15", "15", "17", "14", "7", "22", 
  40.  
  41. "25", "14", "21", "16", "17", "18", "7", "22", "5", "22", "3", "15", "16", "17", "22", "14", "16", "14", "7", "22", "17", "10", "5", "2", "25", "3", "22", 
  42.  
  43. "25", "1", "9", "3", "16", "1", "9", "22", "1", "17", "22", "17", "14", "7", "22", "3", "25", "5", "19", "16", "1", "25", "1", "9", 
  44.  
  45. "16", "13", "23", "24", "22", "1", "25", "14", "16", "21", "17", "11", "1", "14", "7", "22", "14", "7", "11", "3", "12", 
  46.  
  47. "3", "5", "10", "17", "14")
  48.  
  49.  
  50. // This resets all the spaces in the puzzle back to blanks.
  51. function reset() {
  52.     location = "dwarfs.html";
  53. }
  54.  
  55.  
  56. // This function returns an array of letter/number assignments.
  57. function getLetters() {
  58.  
  59.     // Create an array containing all the letters.
  60.     var letter_values = new Array();
  61.     for (loop=0; loop < letters.length; loop++) {
  62.  
  63.         // An array is set up for each letter -> 
  64.         // letter[letter,number]
  65.         letter_values[loop] = new Array();
  66.  
  67.         // Assign the letter to 0.
  68.         letter_values[loop][0] = letters[loop];
  69.  
  70.         // If this letter already has a number assigned to it
  71.         // in the puzzle, fill it into 1 in the array.
  72.         if (document.puzzle.eval(letters[loop]).value) {
  73.             letter_values[loop][1] = document.puzzle.eval(letters[loop]).value;
  74.         }
  75.  
  76.         // Otherwise, assign "" to 1.
  77.         else {
  78.             letter_values[loop][1] = "";
  79.         }
  80.     }
  81.     return letter_values;
  82. }
  83.  
  84.  
  85. // This function returns an array of letter/number assignments.
  86. function getNames() {
  87.  
  88.     // An array containing all the names is created.
  89.     // Each of these will also be an array.
  90.     var name_values = new Array();
  91.     for (loop=0; loop < names.length; loop++) {
  92.  
  93.         // An array is created that will contain ->
  94.         // name[name,letter,number]
  95.         name_values[loop] = new Array();
  96.  
  97.         // The name is assigned to 0.
  98.         name_values[loop][0] = names[loop];
  99.  
  100.  
  101.         // Enter the number for this position into 2.
  102.         name_values[loop][2] = numbers[loop];
  103.     }
  104.     return name_values;
  105. }
  106.  
  107.  
  108. // This fills in the letter in every position that
  109. // has this number.
  110. function fillIn(letter,number) {
  111.  
  112.     var name_values = getNames();
  113.  
  114.     // Search the name_values array for any that are associated with this number.
  115.     // Fill in this letter for that position on the puzzle.
  116.     for (name_loop=0; name_loop < names.length; name_loop++) {
  117.         if (name_values[name_loop][2] == number) {
  118.             document.puzzle.eval(names[name_loop]).value = letter;
  119.         }
  120.     }
  121. }
  122.  
  123.  
  124. // This gets called when a new letter is entered into the puzzle.
  125. function checkvalue(this_value, number, name) {
  126.  
  127.     // Check to see if this this letter has already been 
  128.     // assigned a different number.  If it has been, 
  129.     // remove the letter that was just entered into the
  130.     // puzzle and pop-up alert.
  131.     if ((document.puzzle.eval(this_value).value) && (document.puzzle.eval(this_value).value != number)) {
  132.         document.puzzle.eval(name).value = "";
  133.         alert ("You've already got the number "+ document.puzzle.eval(this_value).value + " assigned to "+ this_value);
  134.     }
  135.  
  136.     // Otherwise, fill in this number under the corresponding
  137.     // letter at the top of the puzzle.
  138.     else {
  139.         document.puzzle.eval(this_value).value = number;
  140.         // Create an array containing all the letters.
  141.         letter_values = getLetters();
  142.         for (loop = 0; loop < letters.length; loop++) {
  143.             if ((letter_values[loop][1] == number) && (letter_values[loop][0] != this_value)) {
  144.                 document.puzzle.eval(letter_values[loop][0]).value="";
  145.             }
  146.         }
  147.         fillIn(this_value,number);
  148.     }    
  149.  
  150. }
  151.  
  152.  
  153. // This gets called when a new number is entered at the top.
  154. function checkforchange(this_value, name) {
  155.  
  156.     // An array containing all the names is created.
  157.     // Each of these will also be an array.
  158.     name_values = getNames();
  159.     for (loop=0; loop < names.length; loop++) {
  160.  
  161.         // Check to see if this name alread has a letter
  162.         // assigned to it in the puzzle.
  163.         if (document.puzzle.eval(names[loop]).value) {
  164.  
  165.             // Check to see if the letter assigned to it
  166.             // matches the letter being checked.
  167.             if (document.puzzle.eval(names[loop]).value == name) {
  168.  
  169.                 // If it does match, then check whether
  170.                 // the number also matches.  If it does,
  171.                 // assign this letter to 1.
  172.                 if (numbers[loop] == this_value) {
  173.                     name_values[loop][1] = name;
  174.                 }
  175.  
  176.                 // Otherwise, "" is assigned to 1 and
  177.                 // the letter is removed from this position
  178.                 // in the puzzle.  (Meaning the top over-rides
  179.                 // the bottom.)
  180.                 else {
  181.                     name_values[loop][1] = "";
  182.                     document.puzzle.eval(names[loop]).value = "";
  183.                 }    
  184.             }
  185.  
  186.             // Otherwise, the letter assigned to this name is not the
  187.             // one we're checking.  So we can just enter it into 1
  188.             // and move on.
  189.             else    {
  190.                 name_values[loop][1] = document.puzzle.eval(names[loop]).value;
  191.             }
  192.         }
  193.  
  194.         // This name doesn't have a letter assigned to it in the puzzle,
  195.         // so we can just enter "" into 1 and move on.
  196.         else {
  197.             name_values[loop][1] = "";
  198.         }
  199.     }
  200.     // Create an array containing all the letters.
  201.     letter_values = getLetters();
  202.     for (loop = 0; loop < letters.length; loop++) {
  203.         if ((letter_values[loop][1] == this_value) && (letter_values[loop][0] != name)) {
  204.             document.puzzle.eval(letter_values[loop][0]).value="";
  205.         }
  206.     }
  207.     fillIn(name,this_value);
  208. }
  209.